package net.hubt.itc.data;



import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * 
 * 
 * 		String xml=HttpUtils.urlContentPost("http://itc-hubt.net/xml.php", "msv","7TD02808","type","1");
		
		XMLDocument xmlDoc = new XMLDocument();
		Document document=xmlDoc.getDocument(xml);
		
		TranscriptXMLParser t=new TranscriptXMLParser();
		t.setRoot(xmlDoc.getRootNode(document));
		
		StudentTranscriptObject sttObj=t.parseXmlData();
 * @author quanla
 *
 */
public class TranscriptXMLParser extends BasicXMLParser {		
	static final String KEY_TEN_SV="HOTEN";
	static final String KEY_MON_HOC="MONHOC";//parent node
	static final String KEY_ID_KY="IDKY";
	static final String KEY_TEN_MON_HOC="TENMONHOC";
	static final String KEY_DVHT="DVHT";
	static final String KEY_KHONG_TD="KHONGTD";
	static final String KEY_DIEM_TB1="DIEMTB1";
	static final String KEY_DIEM_TB2="DIEMTB2";
	//static final String KEY_SINH_VIEN="SINHVIEN";
	private Element mRootNode;
	public void setRoot(Element root){
		mRootNode=root;
	}
	public String getTenSinhVien(){		
		if(mRootNode!=null){
			if(mRootNode.getChildNodes().getLength()>0){
				/*
				NodeList nodeListTenSinhVien=mRootNode.getElementsByTagName(KEY_TEN_SV);
				if(nodeListTenSinhVien.getLength()>0){
					//found <HOTEN>
					Node nodeTenSinhVien=nodeListTenSinhVien.item(0);					
					if(nodeTenSinhVien.getNodeType()==Node.ELEMENT_NODE){
						Element elementTenSinhVien=(Element)nodeTenSinhVien;
						//get the things inside <HOTEN>
						NodeList nodeListTenSinhVienChildren=elementTenSinhVien.getChildNodes();
						if(nodeListTenSinhVienChildren.getLength()>0){							
							if(nodeListTenSinhVienChildren.item(0).getNodeType()==Node.TEXT_NODE){
								return nodeListTenSinhVienChildren.item(0).getNodeValue();
							}
						}
					}
				}
				*/
				return getTagValue(KEY_TEN_SV, mRootNode);
			}
			
		}
		return null;
	}
	
	public StudentTranscriptList parseXmlData(){
		StudentTranscriptList studentTranscript=null;
		if(mRootNode!=null){
			if(mRootNode.getChildNodes().getLength()>0){
				// only one student name with a list of transcript data
				studentTranscript=new StudentTranscriptList();
				studentTranscript.setTenSinhVien(getTenSinhVien());
				
				NodeList nlMonHoc=mRootNode.getElementsByTagName(KEY_MON_HOC);
				if(nlMonHoc.getLength()>0){
					//found <MONHOC>
					int cntMonHoc=nlMonHoc.getLength();
					//extract every single <MONHOC> element tag
					for(int i=0;i<cntMonHoc;i++){
						// a single <MONHOC> element tag
						Node nodeMonHoc=nlMonHoc.item(i);
						if(nodeMonHoc.getNodeType()==Node.ELEMENT_NODE){
							Element element=(Element)nodeMonHoc;
							TranscriptData transObj=new TranscriptData();
							transObj.setTenMonHoc(getTagValue(KEY_TEN_MON_HOC, element));
							transObj.setIdKy(getTagValue(KEY_ID_KY, element));
							transObj.setDvht(getTagValue(KEY_DVHT, element));
							transObj.setKhongTd(getTagValue(KEY_KHONG_TD, element));
							transObj.setDiemTB1(getTagValue(KEY_DIEM_TB1, element));
							transObj.setDiemTB2(getTagValue(KEY_DIEM_TB2, element));		
							studentTranscript.addTranscript(transObj);
						}
					}
				}
			}
		}
		return studentTranscript;
	}
	
	
//	private String getTagValue(String tag , Element element){
//		NodeList nl=element.getElementsByTagName(tag).item(0).getChildNodes();
//		Node nValue=(Node)nl.item(0);
//		return nValue.getNodeValue();
//	}
	
	
	
	
//	public void parseXML(String xml){
//		xmlParser = new XMLParser();
//		Document doc= xmlParser.getDocument(xml);
//		//System.out.println(xml);				
//		Element rootElement=doc.getDocumentElement();
//		TransciptXMLParser transData=new TransciptXMLParser();
//		transData.setRoot(rootElement);
//		System.out.println("transData.tensinhvien="+transData.getTenSinhVien());
//		
//		
//		
//		NodeList nodeListTenSinhVien=rootElement.getElementsByTagName(KEY_TEN_SV);
//		System.out.println(xmlParser.getValue((Element)nodeListTenSinhVien.item(0), KEY_TEN_SV));
//		/*
//		Node nodeTenSinhVien=nodeListTenSinhVien.item(0);
//		if(nodeTenSinhVien.getNodeType()==Node.ELEMENT_NODE){
//			Element elemTenSinhVien=(Element)nodeTenSinhVien;
//			System.out.println("node name : " + elemTenSinhVien.getNodeName());
//			NodeList nlTenSinhVienChild=elemTenSinhVien.getChildNodes();
//			if(nlTenSinhVienChild.item(0).getNodeType()==Node.TEXT_NODE){
//				System.out.println("text node found");
//			}
//			String tenSinhVien=nlTenSinhVienChild.item(0).getNodeValue();
//			System.out.println("ten sinh vien : " + tenSinhVien);
//			
//		}
//		*/
//		
////		doc.getDocumentElement().normalize();
//		System.out.println("root element : "+ doc.getDocumentElement().getNodeName());
//		
//		NodeList listHoten=doc.getElementsByTagName(KEY_TEN_SV);
//		int totalTenSV=listHoten.getLength();
//		System.out.println("total ten sinh vien : " + totalTenSV);
//		for(int i=0;i<totalTenSV;i++){
//			Node nodeTen=listHoten.item(0);
//			if(nodeTen.getNodeType()==Node.ELEMENT_NODE){
//				Element element=(Element)nodeTen;
//			}
//		}
//		
//		
//		NodeList listOfMonHoc=doc.getElementsByTagName(KEY_MON_HOC);
//		int totalMonHoc=listOfMonHoc.getLength();
//		System.out.println("Tong so mon hoc : "+  totalMonHoc);
//		
//		
//		for(int i=0;i<totalMonHoc;i++){
//			Node firstMonHoc=listOfMonHoc.item(i);
//			if(firstMonHoc.getNodeType()==Node.ELEMENT_NODE){
//				Element element=(Element)firstMonHoc;
//				
//				NodeList idKyList=element.getElementsByTagName(KEY_ID_KY);
//				Element idKyElement=(Element)idKyList.item(0);
//				
//				NodeList idKyChildNodes=idKyElement.getChildNodes();
//				System.out.println(idKyChildNodes.item(0).getNodeValue());
//			}
//		}
//		
//		System.out.println("");
//	}
}
